import axios from "axios";
import QS from 'qs'

const httpService = axios.create({
    baseURL: 'http://localhost:8080',
    timeout: 5000
})

httpService.interceptors.request.use(
    config => {
        // 1. 这个位置就请求前最后的配置
        // 2. 当然你也可以在这个位置 加入你的后端需要的用户授权信息
        return config
    },
    error => {
        console.log(error) // for debug 11
        Promise.reject(error)
    }
)
httpService.interceptors.response.use(
    response => {
        if (response.config.responseType === 'blob') {
            if (response.status === 200) {
                return response;
            } else {
                return Promise.reject(response);
            }
        } else {
            const res = response.data;
            if (res.code === '200') {
                return response.data

            } else if (res.code === '407') {
                // console.log("Token失效跳转登陆页面");
                // sessionStorage.clear();
                // location.href="/ecloud-sp/logout";
            } else {

                return Promise.reject('error')
            }
        }

    },
    error => {
        console.log('err' + error) // for debug

        // if (axios.isCancel(error)) {
        //   // 为了终结promise链 就是实际请求 不会走到.catch(rej=>{});这样就不会触发错误提示之类了。
        //   return new Promise(() => {});
        // } else {
        return Promise.reject(error)
        // }
    }
)

export function get(url,params={}){
    return new Promise((resolve,reject) => {
        httpService({
            url:url,
            method:'get',
            params:params
        }).then(res => {
            resolve(res);
        }).catch(err => {
            reject(err);
        })
    })
}

export function post(url, params, data) {
    return new Promise((resolve, reject) => {
        httpService({
            url:url,
            method:'post',
            headers: { 'content-type': 'application/json' },
            params: QS.stringify(params),
            data: data
        }).then(res => {
            resolve(res);
        }).catch(err => {
            reject(err);
        })
    });
}

export default {
    get,
    post
}